// function fn() {
//   let web: string = "hello world";
//   console.log(web)
// }
// fn();

let web: string = "hello world"; // string类型
console.log(web)

// let count: number = 1;
// count = '2'

// interface XiaoJieJie {
//   uname: string;
//   age: number;
// }

// let xiaohong: XiaoJieJie = {
//   uname: '11',
//   age: 2
// }

// const obj: { name: string, age: number } = {
//   name: "小明",
//   age: 22
// }

// const arr: String[] = ['1', '2']

// class Man {}
// const xiaoli: Man = 11
// console.log('xiaoli', xiaoli)

// const xiaohong: () => number = () => {
//   return 2
// }

// let num = 222

// function getTotal(one: any, two: any): number {
//   return one + two;
// }
// const total = getTotal(1, 2);
// console.log(total)

// const one = 1;
// const two = 2;
// const three = one + two;
// console.log(three)

// 无返回
// function sayHello(): void {
//   console.log("hello world");
// }
// sayHello()

// 函数对象参数
// function add({ one, two }: { one: number, two: number }): number {
//   return one + two;
// }
// const three = add({ one: 1, two: 2 });

// 数组
// const numberArr: number[] = [1, 2, 3];
// const stringArr: string[] = ['1', '2', '3'];
// const undefinedArr: undefined[] = [undefined, undefined];
// const moreArr: (number | string)[] = ['1', 23]

// 对象数组
// const womans: { name: string, age: number }[] = [
//   { name: "刘姐", age: 18 },
//   { name: "张姐", age: 28 },
// ];

// type lady = { name: string, age: number }
// const womans: lady[] = [
//   { name: "刘姐", age: 18 },
//   { name: "张姐", age: 28 },
// ];

// class Madam {
//   name: string;
//   age: number;
// }
// const womans: Madam[] = [
//   { name: "刘姐", age: 18 },
//   { name: "张姐", age: 28 },
// ];

 // 元组
// const Mans: [string, number] = ['zhang', 20]

// 接口相关
// interface Girl {
//   name: string;
//   age: number;
//   bust: number;
//   waistline?: number; // 非必选
//   [propname: string]: any;
//   say(): string;
// };
// interface Teacher extends Girl {
//   teach(): string;
// }
// const screenResume = (girl: Teacher) => {
//   girl.age < 24 && girl.bust >= 90 && console.log(girl.name + "进入面试");
//   girl.age > 24 || (girl.bust < 90 && console.log(girl.name + "你被淘汰"));
//   girl.waistline && console.log("腰围是：" + girl.waistline);
//   girl.test && console.log("test是：" + girl.test);
// };
// const girl = {
//   name: "大脚",
//   age: 18,
//   bust: 94,
//   waistline: 99,
//   test: 9,
//   aa: '2',
//   say() {
//     return 'hello hahaha~'
//   },
//   teach() {
//     return 'I am a teacher!'
//   }
// };
// screenResume(girl);

// class XiaoJieJie implements Girl {
//   name = "刘英";
//   age = 18;
//   bust = 90;
//   say() {
//     return "欢迎光临 ，红浪漫洗浴！！";
//   }
// }

// 类class
// class Lady {
//   content = "Hi，帅哥";
//   sayHello() {
//     return this.content;
//   }
// }
// class Meizi extends Lady {
//   sayGood() {
//     return 'you are Great!'
//   }
//   sayHello() {
//     return super.sayHello() + 'hello !!'
//   }
// }
// const goddess = new Meizi();
// console.log(goddess.sayHello());
// console.log(goddess.sayGood());

// class public private protected
// class Person {
//   // private name: string;
//   protected name: string;
//   public sayHello(){
//     console.log(this.name + ' say Hello')
//   }
//   constructor(name: string){
//     this.name = name;
//   }
// }

// class Teacher extends Person{
//   public sayBye(){
//     this.name;
//     console.log('name', this.name)
//   }
// }

// const person = new Person('111');
// // person.name = 'gazi';
// // person.age = 30;
// console.log(person)
// person.sayHello()

// new Teacher('22').sayBye()

// super关键字 类继承以及构造器
// class Person{
//   constructor(public name:string){}
// }

// class Teacher extends Person{
//   constructor(public age:number){
//       super('xiaoli')
//   }
// }

// const teacher = new Teacher(18)
// console.log(teacher.age)
// console.log(teacher.name)

// Getter Setter static
// class Sister {
//   constructor(private _age: number) {}
//   get age() {
//     return this._age
//   }
//   set age(age: number) {
//     this._age = age
//   }
// }
// const meimei = new Sister(28)
// meimei.age = 66
// console.log(meimei.age)

// class Boy {
//   sayHello() {
//     return 'hello boy'
//   }
// }
// class Girl {
//   static sayLove() {
//     return "I Love you";
//   }
// }
// const boy = new Boy()
// console.log(boy.sayHello())
// console.log(Girl.sayLove())

// readonly
// class Person {
//   public readonly _name: string;
//   constructor(name: string) {
//     this._name = name
//   }
// }
// const person = new Person('erge');
// person._name = 'sange';

// 抽象类
// abstract class Girl{
//   abstract skill() :void  //因为没有具体的方法，所以我们这里不写括号
// }
// class Waiter extends Girl{
//   skill() {
//       console.log('大爷，请喝水！')
//   }
// }
// class BaseTeacher extends Girl{
//   skill(){
//       console.log('大爷，来个泰式按摩吧！')
//   }
// }
// class seniorTeacher extends Girl{
//   skill(){
//       console.log('大爷，来个SPA全身按摩吧！')
//   }
// }
// console.log(new Waiter().skill())